package com.shujia.core

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Code11Distinct {
  def main(args: Array[String]): Unit = {
    /**
     * distinct:
     * 可以对数据进行去重操作
     *
     * distinct是一个存在 shuffle 过程的算子，而shuffle计算相比较而言比较耗时
     *
     */


    val sc = new SparkContext(new SparkConf().setMaster("local").setAppName("Mysql2Text"))

    val listRDD: RDD[Int] = sc.parallelize(
      List(1, 1, 2, 2, 3, 3)
      , 2
    )
    //    listRDD
    //      .foreach(println)

    //    listRDD
    //      .distinct()
    //      .foreach(println)

    listRDD
      .mapPartitions {
            // 对数据进行做预处理操作
        case iterator => {
          iterator.toList.distinct.toIterator
        }
      }
      .distinct()
      .foreach(println)


  }
}
